package staticandfinal;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
//static修饰方法为静态方法，属于类，不依赖任何对象就可以访问，是没有this概念的，静态方法不能访问非静态方法和非静态成员变量

//static修饰的变量也称为静态变量，静态变量和非静态变量的区别是：静态变量属于类被所有对象共享，在内存中只有一个副本，它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的
// 在创建对象的时候被初始化，存在多个副本，各个对象拥有的副本互不影响。

//静态方法，静态成员变量，都可以通过类名调用
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private String name;
    private Integer age = 15;
    //打印对象时不会被打印，因为其属于类
    public static String sex = "男";
    public static String u() {
        System.out.println("静态方法"+sex);
        return sex;
    }

//    User user = new User();创建user时就会执行static方法

    static {
        System.out.println("类加载时按顺序执行");
    }
    static {
        System.out.println("创建对象时会执行吗");
    }
}
